import { createAlova, useWatcher, useRequest } from "alova";
import GlobalFetch from "alova/GlobalFetch";
import VueHook from "alova/vue";
import { tips_util } from "@/utils/util";
import $router from "@/route/";
export { useWatcher, useRequest };
export default createAlova({
  // 假设我们需要与这个域名的服务器交互
  baseURL: import.meta.env.VITE_BASE_URL,

  // 在vue项目下引入VueHook，它可以帮我们用vue的ref函数创建请求相关的，可以被alova管理的状态
  statesHook: VueHook,

  // 请求超时时间，单位为毫秒，默认为0，表示永不超时
  // timeout: 50000,

  // 请求适配器，这里我们使用fetch请求适配器
  requestAdapter: GlobalFetch(),

  // 设置全局的请求拦截器，与axios相似
  beforeRequest(config) {
    // const token = sessionStorage.getItem("token");
    // const pathname = window.location.pathname;
    // if (!token && pathname !== "/login") {
    //   $router.push("/login");
    //   return;
    // }
    // config.config.headers = {};
    // if (config.type !== "GET") {
    // config.config.headers["Content-Type"] = "application/json";
    // }
    // config.config.headers["Authorization"] = `Bearer ${token}` || "";
  },

  // 响应拦截器，也与axios类似
  responsed: {
    async onSuccess(response, method) {
      const json = await response.json();
      const CODE = [200];

      // if (json.code === 401) {
      //   tips_util("请重新登录", "warning");
      //   $router.push("/login");
      //   return false;
      // } else if (!CODE.includes(json?.code)) {
      //   // throw new Error(json.msg);
      //   tips_util(json?.msg || "操作失败", "error");
      //   return false;
      // }

      // return json.data;
      // console.log(52,json)

      // 测试兼容
      if (json?.list) {
        json.data = json.list;
        delete json.list;
      }

      return json?.data;
    },
    onError(err) {
      console.log("报错了", err);
    },
  },
});
